package com.hgkj.system.service;

import com.hgkj.system.domain.SysMenu;
import com.hgkj.system.domain.vo.RouterVo;

import java.util.List;
import java.util.Set;

public interface SysMenuService {
    /**
     * 根据角色集合查询权限集合
     * @param roleList 角色集合
     * @return 权限集合
     */
    Set<String> getPermsByRoles(List<String> roleList);

    /**
     * 获取所有路由信息
     * @return 所有路由信息
     */
    List<SysMenu> getAllRouters();

    /**
     * 获取菜单路由信息
     * @param userId 用户ID
     * @return 菜单集合
     */
    List<SysMenu> getRoutersByUserId(Long userId);

    /**
     * 构建可返回前端的路由对象
     * @param menuList 树形数据
     * @return routers
     */
    List<RouterVo> buildMenus(List<SysMenu> menuList);

    /**
     * 新增菜单
     * @param sysMenu data
     * @return rows
     */
    int insertMenu(SysMenu sysMenu);

    /**
     * 修改菜单
     * @param sysMenu 菜单数据
     * @return rows
     */
    int editMenu(SysMenu sysMenu);

    /**
     * 根据菜单ID删除菜单
     * @param menuId menuId
     * @return rows
     */
    int deleteMenuById(Long menuId);
    /**
     * 判断是否有子节点
     * @param menuId menuId
     * @return boolean
     */
    boolean hasChildrenByMenuId(Long menuId);
    /**
     * 检查是否分配给了角色
     * @param menuId menuId
     * @return boolean
     */
    boolean checkMenuExistRole(Long menuId);

    List<SysMenu> listMenu();
}
